package com.ning.weixin.service;

import com.github.pagehelper.PageInfo;
import com.ning.weixin.entity.UserInfo;

import java.util.List;
import java.util.Map;

public interface UserInfoService {

    /**
     * 根据用户openId查询用户信息
     *
     * @param openId
     * @return
     */
    UserInfo findUserInfo(String openId);

    /**
     * 签到打卡更新积分
     *
     * @param userInfo
     */
    void updateScore(UserInfo userInfo);

    /**
     * 保存用户基本信息
     *
     * @param userInfo
     */
    void saveUserInfo(UserInfo userInfo);

    /**
     * 用户更新保存真实姓名+电话号码
     *
     * @param userInfo
     */
    void updateNameAndTel(UserInfo userInfo);

    /**
     * 用户分享导致分享状态变为1
     * 线上线下打卡次数均变化
     *
     * @param userInfo
     */
    void updateShareStatus(UserInfo userInfo);

    /**
     * 线上打卡次数减去1
     *
     * @param userInfo
     */
    void subClockNum(UserInfo userInfo);

    /**
     * 线下打卡次数减去1
     *
     * @param downClockNum
     * @param openId
     */
    void subDownClockNum(Integer downClockNum, String openId);

    /**
     * 根据积分降序查询积分排名
     * 包括头像，昵称，积分
     */
    PageInfo<Map<String, Object>> getScoreRank(int pageNum, int pageSize);

    /**
     * 个人积分排名
     * @param openId
     * @return
     */
    Integer scoreRanking(String openId);

    /**
     * 查询用户所有信息
     * @return
     */
    List<UserInfo> selectUserInfo();

}
